package com.huilian.tool.work.weixin.dto;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 少凡
 * date 2022/1/22 10:28
 * version 1.0
 * 永久授权码
 */
@Data
public class PermanentAuthCode extends Token {

    //企业微信永久授权码,最长为512字节
    private String permanent_code;

    //代理服务商企业信息。应用被代理后才有该信息
    private DealerCorpInfo dealer_corp_info = new DealerCorpInfo();

    //授权方企业信息
    private AuthCorpInfo auth_corp_info = new AuthCorpInfo();

    //授权信息。如果是通讯录应用，且没开启实体应用，是没有该项的。通讯录应用拥有企业通讯录的全部信息读写权限
    private AuthInfo auth_info = new AuthInfo();

    //授权管理员的信息，可能不返回（企业互联由上级企业共享第三方应用给下级时，不返回授权的管理员信息）
    private AuthUserInfo auth_user_info = new AuthUserInfo();

    //推广二维码安装相关信息，扫推广二维码安装时返回。（注：无论企业是否新注册，只要通过扫推广二维码安装，都会返回该字段）
    private RegisterCodeInfo register_code_info = new RegisterCodeInfo();

    private String state;


    @Override
    public String toString() {
        return "PermanentAuthCode{" +
                "expires_in='" + super.getExpires_in() + '\'' +
                ", errcode='" + super.getErrcode() + '\'' +
                ", errmsg='" + super.getErrmsg() + '\'' +
                "permanent_code='" + permanent_code + '\'' +
                ", dealer_corp_info=" + dealer_corp_info +
                ", auth_corp_info=" + auth_corp_info +
                ", auth_info=" + auth_info +
                ", auth_user_info=" + auth_user_info +
                ", register_code_info=" + register_code_info +
                ", state='" + state + '\'' +
                '}';
    }


    //代理服务商企业信息。应用被代理后才有该信息
    @Data
    public class DealerCorpInfo{
        //代理服务商企业微信id
        private String corpid;
        //代理服务商企业微信名称
        private String corp_name;
    }

    //授权方企业信息
    @Data
    public class AuthCorpInfo{
        private String corpid; //授权方企业微信id
        private String corp_name; //授权方企业名称，即企业简称
        private String corp_type; //授权方企业类型，认证号：verified, 注册号：unverified
        private String corp_square_logo_url; //授权方企业方形头像
        private String corp_user_max; //授权方企业用户规模
        private String corp_full_name; //授权方企业的主体名称(仅认证或验证过的企业有)，即企业全称。
        private String verified_end_time; //企业类型，1. 企业; 2. 政府以及事业单位; 3. 其他组织, 4.团队号
        private String subject_type; //认证到期时间
        private String corp_wxqrcode; //授权企业在微信插件（原企业号）的二维码，可用于关注微信插件
        private String corp_scale; //企业规模。当企业未设置该属性时，值为空
        private String corp_industry; //企业所属行业。当企业未设置该属性时，值为空
        private String corp_sub_industry; //企业所属子行业。当企业未设置该属性时，值为空
    }

    @Data
    public static class AuthInfo{
        private List<Agent> agent = new ArrayList<>();
    }


    @Data
    static class Agent{
        private String agentid;
        private String name;
        private String round_logo_url;
        private String square_logo_url;
        private String appid;
        private String auth_mode;
        private String is_customized_app;
        private Privilege privilege = new Privilege();
        private SharedFrom shared_from = new SharedFrom();

    }
    @Data
    static class Privilege{
        private String level;
        private Object allow_party;
        private Object allow_user;
        private Object allow_tag;
        private Object extra_party;
        private Object extra_user;
        private Object extra_tag;
    }

    @Data
   static class SharedFrom{
        private String corpid;
        private String share_type;
    }

    @Data
     class AuthUserInfo{
        private String userid;
        private String open_userid;
        private String name;
        private String avatar;
    }

    @Data
     class RegisterCodeInfo{
        private String register_code;
        private String template_id;
        private String state;
    }
}
